package com.clps.algorithm.chapter12.数组相对排序;

/**
 *数组相对排序
 * 输入两个数组,arr1和arr2,其中arr2里的每个数字都是唯一并且都是arr1中的数字,请将arr1中的数字按照arr2中的数字相对排序,
 * 如果arr1中的数字在arr2中没有出现，那么将这些数字按递增的顺序排在后面。假设数组中的所有数字都在0到1000的范围内。
 * 例如，输入的数组arr1和arr2分别是[2, 3, 3, 7, 3, 9, 2, 1, 7, 2]和[3, 2, 1]，则arr1排序之后为[3, 3, 3, 2, 2, 2, 1, 7, 7, 9]。
 */
public class demo02 {
    public static void main(String[] args) {

    }

    public int[] relationSortArray(int[] arr1,int[] arr2){
        int[] counts = new int[1001];
        for (int num : arr1) {
            counts[num]++;
        }

        int i =0;
        for (int num : arr2) {
            while (counts[num]>0){
                arr1[i++]=num;
                counts[num]--;
            }
        }


        for (int num = 0; num < counts.length; num++) {
            while (counts[num]>0){
                arr1[i++]= num;
                counts[num]--;
            }
        }

        return  arr1;
    }
}
